当前位置:flash课件吧→免费FLASH教程之三(含实例教程)新页面 新改版 新气象

题 目:Flash中水的形成思路和方法

用flash实现水的效果,方法很多,我这里提供一个比较简单的方法和思路,因为本人比较懒,图文兼备就免了,代码 注释,大家仔细看看,不懂的地方再一起讨论,我也是新接触flash8,更有不对的地方,高手多多指出,OK.Go

  
import flash.display.BitmapData;

  import flash.geom.Point;

  import flash.geom.Rectangle;

  import flash.filters.DisplacementMapFilter;

  //

  // 加载位图元素

  var image:BitmapData = BitmapData.loadBitmap("image");

  // 取得位图元素的宽和高

  var W:Number = image.width;

  var H:Number = image.height;

  // 配置原点为(0,0)

  var origin:Point = new Point();

  // 配置范围是个从(0,0)开始到(W,H)的一个范围

  var bound:Rectangle = new Rectangle(0,0,W,H);

  // 以上这些参数是等下用在滤镜等一些效果操作的参数内的

  // 目的是要固定好这些效果的影响范围

  // ------------------------------------------------

  // 创建一个空位图元素,用来模拟’水’

  var water:BitmapData = new BitmapData(W,H);

  // 创建一个空的mc,用来加载位图元素显示于屏幕上

  var output:MovieClip = _root.createEmptyMovieClip("output",0);

  // 配置一下mc的偏移,为什么?等下介绍

  output._x = output._y=-50;

  // 加载位图元素image

  output.attachBitmap(image, 0);

  // 以上是创建一些必要的位图元素和显示位图的mc

  // ------------------------------------------------------

  // 这个是测试用的,感兴趣的能够把画面放大就能够

  // 看到’水’的样子

  var display:MovieClip = _root.createEmptyMovieClip("display",1);

  display.attachBitmap(water,0);

  display._x = W;

  // --------------------------------------------

  // 创建一个DisplacementMapFilter

  // 关于这个滤镜,其实就是能够通过一个固定公式

  // 让一张位图上的象素产生偏移,这个公式帮助里面有,大家尽量多看帮助

  var dmf:DisplacementMapFilter = new DisplacementMapFilter();

  // 以下就是配置,影响的位图是上面定义的water

  // 起点是之前定义的原点origin

  // 更有一些公式里面用到的参数 (多看帮助,多看帮助)

  dmf.mapBitmap = water;

  dmf.mapPoint = origin;

  dmf.componentX = 1;

  dmf.componentY = 1;

  dmf.scaleX = 45;

  dmf.scaleY = 45;

  dmf.mode = "color";

  // 这个就是保存一个路径到数组,等下供mc使用

  var myFilters:Array = [ dmf ];

  // 以上等一的一些滤镜,作用是用来把water位图元素中的数据过滤到

  // image位图元素中,从而使image产生water相同的感觉,大家也看出来了

  // water的好坏,直接影响最后image出来的水的效果

  // ----------------------------------------------------

  // 下面一些参数等下会用到

  var rndSeed:Number = new Date().getTime();

  var offsets:Point = new Point(0,0);

  var speed:Number = 1;

  var inc:Number = 5;

  // ----------------------------------------------------

  onEnterFrame = function()

  {

  // 以下一些是产生加速度移动的效果,能够忽律,直接使用

  // 匀速移动就行了

  inc = speed;

  if( inc > 12 )

  {

  inc = 12;

  speed = -speed;

  }

  else if ( inc < 5 )

  {

  inc = 5;

  speed = -speed;

  }

  // 上面的速度就是影响,x,y的偏移,到底xy是哪里的呢,往下看

  offsets.x = inc;

  offsets.y = inc;

  // 这里就是形成water的关键,也就是BitmapData里面的perlinNoise方法

  // 这个方法,其实实现的是个类似Photoshop里面"云雾"的滤镜(不知道是不是叫这名字-_-)

  // 里面的一些参数,大家看帮助,说的很仔细..

  // 上面的offsets就是让这个"云雾"移动起来!

  water.perlinNoise(300,300,1, rndSeed, false, false, 1, true, offsets);

  // 最后把output的滤镜一下就完成了

  output.filters = myFilters;

  // 到此,我还没有介绍output为什么有个偏移量

  // 其实这是displacementMapFilter造成的

  // 原因是使用了这个滤镜后,整个被过滤的位图元素会发生偏移

  // 偏移多少,由他里面的参数决定,所以大致要弥补一下这个偏移

  // 所以随便配置个数字啦,呵呵

  }

 

  下面是效果和源文档,可能看上去不太像水波~_~!...我也这么觉得,更像旗子飘啊飘的.但其实大致思路还是讲清了.

  主要就是DisplacementMapFilter类和perlinNosie方法

  前者能够让一个位图元素发生偏移,这样就能够模拟光在波面的折射

  后者是在一张空白的位图上,产生"云雾"的纹路来模拟水的纹路.

  但是要完全逼真,还是看头上的教程,然后用flash8里面提供的滤镜来模拟数学建模,这一点还是比较复杂的

 

 

 

 

 

 

期刊论文服务

合作期刊
学报期刊
 
获奖证书办理
本站已改版成新站 课件115学培吧http://www.kj115.com
免费FLASH教程之三(含实例教程)内容导航
为Flash建搜索内容索引 Flash广告播放器研发 Flash引领互动动画潮流 Flash趣味鼠标特效大作战
Flash MX 2004滚动文本框的两种做法 给Flash文件添加历史记录 Flash中的常见术语(详解) 用笛卡尔公式画出的一颗心状图
播放器拖动进度条制作 水滴效果动画,Flash制作中的AS问题 中秋寄相思 自制Flash贺卡 用SWiSHmax轻松制作精彩Flash片头
用autocad制作一个量角器_autocad教程 Flash百叶窗制作教程 Flash制作实用别致的导航菜单 Flash实用技巧之音乐时间显示篇
Flash中的电影艺术之镜头技巧教程
Flash AS游戏教程:人物及控制 PS+FLASH制作马赛克效果 如何在论坛中,链接自已的FLASH动画呢!
FLASH中的抛运动中的竖直上抛运动 鼠标感应花儿转动效果 FLASH效果篇:闪光效果 自己动手制作手机Flash主题动画
晨雾蒙蒙动画效果,Flash制作方法 Flash制作简单MP3播放器 Flash制作滚动广告图片效果 Flash MX动画制作实例教程-文字处理-设置段落属性
电闪雷鸣、小雨纷飞的效果,Flash制作方法 Flash实现用鼠标调整窗口的大小 AS3学习源码--打气球 关于主动画中load动画和动态文本的共同运用问题
关于倒计时程序的准确性解决方法之一 Flash加载外部文件的方法与技巧集合 Tween类:图片缓动浏览效果 FLASH中加载外部音乐代码&部分难找AS教程
Flash与Java Servlet结合实现网上对战 用AS3实再FLASH游戏的上下左右移动 FLASH中加载外部音乐代码 Flash动态文本框中加载HTML格式文本
Flash制作环绕的立体图片效果动画 FLASH CS3中的FLA形式组件制作教程 酷!Flash聊天室的实现 更多相关内容总目录(200个)》》》
国家信息产业部备案专号:鄂ICP08005724返回顶部
本站推荐最佳分辨率:1024X768在线咨询台
声明:我站除课件制作动画制作培训以外,所有内容均属于免费资源。本站部分资源来自于网络,由本站收集整理,如有侵权请联系本站管理(QQ444860709 手机13339817386),我站会在三个工作日内处理。